package cn.bs.busuo.front.account.pojo.entity;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.Size;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;

/**
* 用户实体类
*/
@Data
@TableName("account_user")
public class User implements Serializable {

    /**
    * 用户ID
    */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty("用户ID")
    private Long id;
    /**
    * 用户名
    */
    @Size(min = 4,max= 15,message="名字长度必须大于3且不能超过15")
    @ApiModelProperty("用户名")
    private String username;
    /**
    * 密码（密文）
    */
    @ApiModelProperty("密码（密文）")
    private String password;
    /**
    * 头像URL
    */
    @ApiModelProperty("头像URL")
    private String avatar;
    /**
    * 最后登录地址
    */
    @ApiModelProperty("最后登录地址")
    private String lastLoginAddress;
    /**
    * 用户年龄
    */
    @ApiModelProperty("用户年龄")
    @Range(min = 1,max = 120,message ="年龄必须为正数且小于120" )
    private Integer age;
    /**
    * 性别
    */
    @Size(max= 3,message="请输入正确的性别")
    @ApiModelProperty("性别")
    private String gender;
    /**
    * 简介
    */
    @Size(max= 255,message="简介长度不能超过255")
    @ApiModelProperty("简介")
    private String description;
    /**
    * 是否启用，1=启用，0=未启用
    */
    @ApiModelProperty("是否启用，1=启用，0=未启用")
    @Range(min = 0,max = 1,message = "用户启用状态码错误")
    private Integer enable;
    /**
    * 最后登录IP地址（冗余）
    */
    @ApiModelProperty("最后登录IP地址（冗余）")
    private String lastLoginIp;
    /**
    * 浏览器内核（冗余）
    */
    @ApiModelProperty("浏览器内核（冗余）")
    private String userAgent;
    /**
    * 最后登录时间（冗余）
    */
    @ApiModelProperty("最后登录时间（冗余）")
    private Date gmtLastLogin;
    /**
    * 数据创建时间
    */
    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty("数据创建时间")
    private LocalDateTime gmtCreate;
    /**
    * 数据最后修改时间
    */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @ApiModelProperty("数据最后修改时间")
    private LocalDateTime gmtModified;

}
